﻿#region << 版 本 注 释 >>
/*----------------------------------------------------------------
// Copyright (C) 2021 kingerrobot
// 版权所有。 
//
// 文件名：BWcsNetAbnormal
// 文件功能描述：
//
// 创建者：名字 (zzl)
// 时间：2021/12/8 10:21:41
//
// 修改人：
// 时间：
// 修改说明：
// 版本：V1.0.0
//----------------------------------------------------------------*/
#endregion
namespace KingerRobot.MexicoSailunMDC.SpiService;
internal class BWcsNetAbnormal : IWcsNetAbnormal
{
    public long GetAbnormalLocIdByStartLoc(long startLoc) => GetWcsNetAbnormalByStartLoc(startLoc)?.TargetLoc ?? 0;

    public List<long> GetAbnormalLocIdsByStartLocs(List<long> startLocs) => GetWcsNetAbnormalsByStartLocs(startLocs).Select(t => t.TargetLoc.GetValueOrDefault()).ToList();

    public POWcsNetAbnormal GetWcsNetAbnormalByStartLoc(long startLoc)
    {
        var db = Db.Default;
        var result = db.WcsNetAbnormals
            .Where(t => t.StartLoc == startLoc)
            .OrderBy(t => t.RelateScore)
            .FirstOrDefault();
        return result;
    }

    private List<POWcsNetAbnormal> GetWcsNetAbnormalsByStartLocs(List<long> startLocs)
    {
        var db = Db.Default;
        var result = db.WcsNetAbnormals
            .Where(t => startLocs.Contains(t.StartLoc.GetValueOrDefault()))
            .OrderBy(t => t.RelateScore)
            .ToList();
        return result;
    }

    public List<POWcsNetAbnormal> GetWcsNetAbnormals()
    {
        var db = Db.Default;
        var result = db.WcsNetAbnormals.ToList();
        return result;
    }

    public int UpdateAbnormalNowLoc(long id, long target)
    {
        var db = Db.Default;
        var result = db.WcsNetAbnormals.Where(t => t.Id == id).Update( new POWcsNetAbnormal
        {
            UpdateTime = DateTime.Now,
            NowLoc = target,
        });
        return db.SaveChanges();
    }
}
